#pragma once

#include "Graphics.hh"
#include "IModule.hh"
#include "Node.hh"
#include "ccstd.hh"

namespace sirtet
{

struct Engine final
{
  private:
    std::unique_ptr<Graphics> graphics;
    Node root;

  private:
    Engine();

  public:
    void init(SDL_Window *window);
    void update();
    void after_update();
    Node &get_root();
    std::unique_ptr<Graphics> &get_graphics();

  public:
    static Engine *instance();
    static void deinit();
};

} // namespace sirtet